Сокрытие признаков Joomla! |
Статьи - Joomla 1.5 |
Сокрытие признаков Joomla!При взломе сайта злоумышленник в первую очередь определяет платформу и CMS сайта. Сделать это можно по ряду признаков, характерных для той или иной CMS.
Рассмотрим самые распространённые и явные признаки CMS Joomla!, а также способы устранения этих признаков.
1. Копирайт внизу страницыСтандартный копирайт выглядит так: «Joomla! is Free Software released under the GNU/GPL License». 2. Формат ссылокСтандартные ссылки у Joomla! выглядят следующим образом: http://site.ru/index.php?option=com_frontpage&Itemid=1 http://site.ru/index.php?option=com_content&task=view&id=14&Itemid=1 http://site.ru/content/view/14/1 и т.п. 3. Административная панель (админка)Проверяем наличие админки по стандартному адресу Joomla!: site.ru/administrator 4. Meta-тегиМногие забывают изменить описание сайта и его ключевые слова. В итоге в исходном коде страницы мы можем увидеть следующее: <meta name="description"
content="Joomla - the dynamic portal engine and content management system" /> <meta name="keywords" content="Joomla, joomla" /> А также тег generator, который генерируется ядром: <meta name="Generator"
content="Joomla! - Copyright © 2005-20010 Open Source Matters. All rights reserved." /> 5. Просмотр позиций для модулейПри обращении к сайту по адресу site.ru/?tp=1 можно легко убедиться что сайт работает именно на CMS Joomla! 6. Robots.txtПросмотрев этот файл по адресу site.ru/robots.txt можно также с некоторой долей вероятности определить CMS: User-agent: * Disallow: /administrator/ Disallow: /cache/ Disallow: /components/
7. Постраничная навигация сайтаИногда достаточно одного взгляда на построение постраничной навигации: << В начало < Предыдущая 1 2 3 4 5 Следующая > В конец >> 8. Содержимое папок сайтаНа некоторых хостах (что совсем печально) можно посмотреть содержимое всех папок сайта: например site.ru/components/ 9. Стандартные пути к шаблонуи название соответствующих классов (зашитых в ядро). 10. Стандартная иконка Joomla!Многие забывают о ней или не считают нужным сменить, но это ведь почти стопроцентный признак. 11. Ошибка 404После ввода заведомо несуществующего адреса, Joomla! выдает стандартную, всем знакомую красненькую табличку с надписью «404 - Компонент не найден». Способы избавления от вышеперечисленных признаков1. Копирайты в «подвале» (footer) сайтаJoomla 1.0.xПосле установки Joomla! внизу страницы можно увидеть следующее:
© 2009 Site Name Joomla! is Free Software released under the GNU/GPL License.
В файле index.php вашего шаблона есть строка:
<?php include_once( $GLOBALS['mosConfig_absolute_path'] . '/includes/footer.php' ); ?>
Удалив ее, можно избавиться от вывода копирайтов в «подвале» сайта. Но только для этого шаблона. Если у вы часто меняете шаблоны, есть смысл сделать небольшой хак, что б избавиться от этого раз и навсегда.
Открываем файл includes/footer.php и видим следующие стоки:
<div align="center">
© <?php echo mosCurrentDate( '%Y' ) . ' ' . $GLOBALS['mosConfig_sitename'];?> </div> Этот выводит значок копирайта, текущий год и название вашего сайта.
А также:
<div align="center">
<?php echo $_VERSION->URL; ?> </div> Этот выводит версию движка и лицензию.
Удаляем или редактируем их.
Joomla 1.5.xВ линейке 1.5.x вывод копирайтов осуществляется в корне отличным способом и убрать его можно минимум тремя способами: а) В менеджере модулей отключить вывод модуля «Footer» (mod_footer). Но в этом случае исчезнуть все копирайты, а не только "joomla-овские". б) В языковом файле /language/ru-RU/ru-RU.mod_footer.ini в строках:
FOOTER_LINE1=
FOOTER_LINE2= Убрать все, что справа от знака равно в) В файле /modules/mod_footer/tmpl/default.php отключить вывод 2-ой строки, удалив строку:
<div><?php echo JText::_( 'FOOTER_LINE2' ); ?></div>
2. Ссылки на страницыЧтобы изменить стандартный тип ссылок на внутренние страницы Joomla! необходимо использовать сторонние компоненты, которые могут создавать любые ссылки на внутренние страницы вашего сайта – sh404SEF, ARTIO JoomSEF, NuSEF (бесплатные), SEF Advance (платный) и другие. 3. АдминкаВсем известно что вход в административную часть сайта на CMS Joomla! осуществляется через site.ru/administrator Есть два способа скрыть вход в админку. а) Средствами сервера: поставить пароль на папку administrator В папке administrator создаем такой .htaccess:
AuthName "For Registered Users Only"
AuthType Basic AuthUserFile /pub/site.ru/.htpasswd require valid-user Значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe. У этого способа есть один очень существенный недостаток: если используются расширения у которых файлы обращаются к папке администратора (например языковый файл или другие), то вместо требуемого пользователь столкнется с предложением ввести логин и пароль. б) Средствами Joomla: поставить специально предназначенные для этого расширения. Например плагин для Joomla! 1.5 jSecure Authentication. При переходе на страницу site.ru/administrator он включает заданную переадресацию. В админку можно попасть, только задав ключевое слово в адресной строке: site.ru/administrator/?password
4. Meta-теги сайта. Description, keywords и GeneratorСодержимое meta-тегов Description и keywords прописывается в глобальных настройках сайта и означает не что иное, как описание сайта и его ключевые слова. Просто не забывайте заполнять эти данные (встречается и такое). А вот на meta-тег Generator без хака мы повлиять не сможем. Generator для Joomla! 1.0.x:В исходном коде страниц видим: <meta name="Generator" content="Joomla! - Copyright © 2005-2007 Open Source Matters.
All rights reserved." /> Данная строка выводится в функции mosShowHead() файла includes/frontend.php, строка 195 (для Joomla 1.0.15): $mainframe->addMetaTag('Generator', $_VERSION->PRODUCT . ' - ' . $_VERSION->COPYRIGHT);
Для удаления этой информации из кода страниц сайта необходимо закомментировать или удалить эту строчку. Generator для Joomla! 1.5.x:В исходном коде страниц видим: <meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />
Есть два способа влияния на мета-тег Generator: путем хака ядра и внесением кода в шаблон. Первый способ (хак ядра Joomla!) подходит тем, кто не планирует постоянно обновлять ядро сайта и/или часто меняет шаблоны сайта. Открываем следующие файлы: libraries/joomla/document/document.php Если хотим просто изменить эту строку, то в файле document.php находим примерно 85 строку: var $_generator = 'Joomla! 1.5 - Open Source Content Management';
и вставляем свое внутрь кавычек ‘ ‘ Если хотим совсем удалить этот мета тег, то в файле head.php, комментируем // строку (примерно 83): $strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />';
Второй способ (правка шаблона), более мягкий и не требует вмешательства в код ядра Joomla! (при обновлениях ядра можно не беспокоиться о хаках, так как их просто не будет). Где-то между тегами и вставляем следующую строку: <?php $this->setGenerator('Ваш мета-тег geneator');?>
Или же оставляем пустое значение мета-тега: <?php $this->setGenerator(''); ?>
5. Исключаем возможность просмотра позиций для модулей через site/?tp=1Для Joomla! 1.0.xДля этого нам надо сделать небольшой хак. Открываем файл /includes/frontend.php Ищем примерно 129-135 строки (для Joomla! 1.0.15): $tp = intval( mosGetParam( $_GET, 'tp', 0 ) );
if ($tp) { echo '<div style="height:50px;background-color:#eee; margin:2px;padding:10px;border:1px solid #f00;color:#700;">'; echo $position; echo '</div>'; return; } Удаляем их, либо комментируем. Для Joomla! 1.5.xОткрываем файл /libraries/joomla/application/module/helper.php Ищем примерно 96-103 строки: if(count($result) == 0) {
if(JRequest::getBool('tp')) { $result[0] = JModuleHelper::getModule( 'mod_'.$position ); $result[0]->title = $position; $result[0]->content = $position; $result[0]->position = $position; } } Комментируем их. Далее ищем примерно 199-201 строки: if(JRequest::getBool('tp')) {
$attribs['style'] .= ' outline'; } Комментируем их. 7. Постраничная навигация.Для изменения внешнего вида постраничной навигации необходимо немного переработать её вывод. В этом поможет статья «Изменение постраничной навигации сайта на CMS Joomla!» 8. Запрет просмотра содержимого папок вашего сайтаЕсли набрать адрес существующей папки, например, http://example.org/components/com_content/ и вы видите ее содержимое, то это значит, что на Вашем сервере настроенная выдача список директорий. Это дает возможность злоумышленнику дополнительные плюсы при изучении вашего сайта. Избежать открытого списка можно двумя способами: 1. В .htaccess или в конфигурации apache создать директиву: Options - Indexes
2. В каждую директорию положить пустой файл index.html. По умолчанию загружается файл с названием index (.htm, .html, .php и т.д.). 10. Стандартная иконка Joomla!В первую очередь иконка сайта favicon.ico ищется в корне сайта. Вы можете создать свою иконку (например с помощью сервиса http://favicon.ru) и загрузить ее в корень. Второй вариант - иконка помещается в папку вашего шаблона. 11. Ошибка 404Страница с ошибкой 404 появляется тогда, когда неверно указан адрес (URL) запрашиваемого сайта или страницы, либо когда документ отсутствует на web-сервере. Обычно пользователь закрывает эту страницу и уходит на поиски других ресурсов, удовлетворяющих его требованиям. Для того, чтобы "не потерять" пользователя, рекомендуется создать свою страницу с ошибкой 404, со своим дизайном и инструкциями, куда перейти пользователю дальше - воспользоваться поиском или перейти на главную страницу, карту сайта и т.п. В данной статье рассказывается, как можно сделать собственную страницу «Ошибки 404». В сети Интернет на различных сайтах и форумах существует множество примеров по созданию сообщения об ошибке. Мы предлагаем Вам наиболее удобный, на наш взгляд. Итак, стандартный файл error.php выглядит так: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <title><?php echo $this->error->code ?> - <?php echo $this->title; ?></title> <link rel="stylesheet" href="/<?php echo $this->baseurl; ?>/templates/system/css/error.css" type="text/css" /> <?php if($this->direction == 'rtl') : ?> <link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/system/css/error_rtl.css" type="text/css" /> <?php endif; ?> </head> <body> <div align="center"> <div id="outline"> <div id="errorboxoutline"> <div id="errorboxheader"><?php echo $this->error->code ?> - <?php echo $this->error->message ?> </div> <div id="errorboxbody"> <p><strong><?php echo JText::_('You may not be able to visit this page because of:'); ?> </strong></p> <ol> <li><?php echo JText::_('An out-of-date bookmark/favourite'); ?></li> <li><?php echo JText::_('A search engine that has an out-of-date listing for this site'); ?></li> <li><?php echo JText::_('A mis-typed address'); ?></li> <li><?php echo JText::_('You have no access to this page'); ?></li> <li><?php echo JText::_('The requested resource was not found'); ?></li> <li><?php echo JText::_('An error has occurred while processing your request.'); ?></li> </ol> <p><strong><?php echo JText::_('Please try one of the following pages:'); ?></strong></p> <p> <ul> <li><a href="/<?php echo $this->baseurl; ?>/index.php" title="<?php echo JText::_('Go to the home page'); ?>"> <?php echo JText::_('Home Page'); ?></a></li> </ul> </p> <p><?php echo JText::_('If difficulties persist, please contact the system administrator of this site.'); ?></p> <div id="techinfo"> <p><?php echo $this->error->message; ?></p> <p> <?php if($this->debug) : echo $this->renderBacktrace(); endif; ?> </p> </div> </div> </div> </div> </div> </body> </html> Открываем в админке Joomla менеджер материалов и создаем новую статью. Оформляем своё сообщение об «Ошибке 404», пишем свой текст, вставляем свои изображения... Затем, в редакторе отключаем сам редактор и перед вами появится код. Копируем этот код. Теперь возвращаемся в наш стандартный файл error.php и находим следующий код, который привязывает файлы стилей: <head>
<title><?php echo $this->error->code ?> - <?php echo $this->title; ?></title> <link rel="stylesheet" href="/<?php echo $this->baseurl; ?>/templates/system/css/error.css" type="text/css" /> <?php if($this->direction == 'rtl') : ?> <link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/system/css/error_rtl.css" type="text/css" /> <?php endif; ?> </head> Вам нужно закомментировать весь этот код или просто удалить его. После этого находим следующий код: <p><strong><?php echo JText::_('You may not be able to visit this page because of:'); ?>
</strong></p> <ol> <li><?php echo JText::_('An out-of-date bookmark/favourite'); ?></li> <li><?php echo JText::_('A search engine that has an out-of-date listing for this site'); ?></li> <li><?php echo JText::_('A mis-typed address'); ?></li> <li><?php echo JText::_('You have no access to this page'); ?></li> <li><?php echo JText::_('The requested resource was not found'); ?></li> <li><?php echo JText::_('An error has occurred while processing your request.'); ?></li> </ol> <p><strong><?php echo JText::_('Please try one of the following pages:'); ?></strong></p> <p> <ul> <li><a href="/<?php echo $this->baseurl; ?>/index.php" title="<?php echo JText::_('Go to the home page'); ?>"> <?php echo JText::_('Home Page'); ?></a></li> </ul> </p> <p><?php echo JText::_('If difficulties persist, please contact the system administrator of this site.'); ?></p> <div id="techinfo"> <p><?php echo $this->error->message; ?></p> <p> <?php if($this->debug) : echo $this->renderBacktrace(); endif; ?> </p> и вместо вышеуказанного кода вставляете свой код, который Вы создавали ранее. Сохраняем в utf-8. И теперь в браузере набираем http://адрес_вашего_сайта/абра_кадабра. Вот Вы видите свою собственную страницу «Ошибка 404». |